Distributed computing based on deep packet inspection by network devices along network path to computing device

ABSTRACT

In one embodiment, a method comprises: determining application processing capabilities in one or more network devices, in a data network, for execution of at least a portion of a prescribed application on identifiable data packets from a requesting network device and destined for a computing device; and sending instructions to the one or more network devices, the instructions enabling the one or more network devices to execute at least the portion of the prescribed application, on behalf of the computing device, in response to detecting receipt of the identifiable data packets.

TECHNICAL FIELD

The present disclosure generally relates to distributed computing in adata network, more particularly to deep packet inspection by networkdevices on a network path from a requesting network device to adestination computing device.

BACKGROUND

This section describes approaches that could be employed, but are notnecessarily approaches that have been previously conceived or employed.Hence, unless explicitly specified otherwise, any approaches describedin this section are not prior art to the claims in this application, andany approaches described in this section are not admitted to be priorart by inclusion in this section.

Distributed computing can involve multiple computing devices providing agiven service, where each computing device can share in providing thegiven service based on coordinated execution of one or more prescribedapplications. Distributed computing can be applied in peer-to-peerapplications or client-server based applications, including providingcloud-based application services.

The Internet of Things (IoT) refers to interconnecting of uniquelyidentifiable embedded devices within a wide area network, such as theexisting Internet infrastructure. The embedded devices typically havevery low compute, store, network, or battery power capabilities, howeverthe large number of embedded devices serving as sensor devices in theIoT architecture can result in a dramatically increased amount of databeing supplied to destination computing devices for processing.

BRIEF DESCRIPTION OF THE DRAWINGS

Reference is made to the attached drawings, wherein elements having thesame reference numeral designations represent like elements throughoutand wherein:

FIG. 1 illustrates an example system having an apparatus sendinginstructions to one or more network devices to enable distributedexecution of a prescribed application by the network devices on behalfof a computing device, according to an example embodiment.

FIG. 2 illustrates another example system enabling network devices todetermine an optimized path providing a minimal overall computing timefor completing execution of a prescribed application, according to anexample embodiment.

FIG. 3 illustrates an example implementation of any one of the devicesof FIG. 1 or 2.

FIGS. 4A-4C summarize methods by the devices of FIGS. 1-3 of providingdistributed execution of a prescribed application on behalf of acomputing device, according to an example embodiment.

FIG. 5 illustrates an example network device providing distributedexecution of at least a portion of a prescribed application on behalf ofa computing device, according to an example embodiment.

DESCRIPTION OF EXAMPLE EMBODIMENTS Overview

In one embodiment, a method comprises: determining applicationprocessing capabilities in one or more network devices, in a datanetwork, for execution of at least a portion of a prescribed applicationon identifiable data packets from a requesting network device anddestined for a computing device; and sending instructions to the one ormore network devices, the instructions enabling the one or more networkdevices to execute at least the portion of the prescribed application,on behalf of the computing device, in response to detecting receipt ofthe identifiable data packets.

In another embodiment, an apparatus comprises a device interface circuitand a processor circuit. The device interface circuit is configured forcommunications with one or more network devices in a data network. Theprocessor circuit is configured for determining application processingcapabilities in the one or more network devices, for execution of atleast a portion of a prescribed application on identifiable data packetsfrom a requesting network device and destined for a computing device.The processor circuit also is configured for sending, via the deviceinterface circuit, instructions to the one or more network devices, theinstructions enabling the one or more network devices to execute atleast the portion of the prescribed application, on behalf of thecomputing device, in response to detecting receipt of the identifiabledata packets.

In another embodiment, logic is encoded in one or more non-transitorytangible media for execution by a machine and when executed by themachine operable for: determining application processing capabilities inone or more network devices, in a data network, for execution of atleast a portion of a prescribed application on identifiable data packetsfrom a requesting network device and destined for a computing device;and sending instructions to the one or more network devices, theinstructions enabling the one or more network devices to execute atleast the portion of the prescribed application, on behalf of thecomputing device, in response to detecting receipt of the identifiabledata packets.

In another embodiment, a method comprises: receiving, by a networkdevice in a data network, instructions enabling execution of at least aportion of a prescribed application on identifiable data packets, theidentifiable data packets originating from a requesting network deviceand destined for execution of the prescribed application by a computingdevice; executing by the network device, on behalf of the computingdevice, at least a portion of the prescribed application on data packetsreceived via the data network based on identifying the data packets asthe identifiable data packets, and further based on determined availableprocessing capabilities in the network device; and outputting asprocessed data packets, via the data network toward the computingdevice, the data packets having been executed on by the network device.

In another embodiment, an apparatus comprises a network interfacecircuit and a processor circuit. The network interface circuit isconfigured for receiving, via in a data network, instructions enablingexecution of at least a portion of a prescribed application onidentifiable data packets, the identifiable data packets originatingfrom a requesting network device and destined for execution of theprescribed application by a computing device. The processor circuit isconfigured for executing, on behalf of the computing device, at least aportion of the prescribed application on data packets received by thenetwork interface circuit based on identifying the data packets as theidentifiable data packets, and further based on determined availableprocessing capabilities in the apparatus. The network interface circuitis further configured for outputting as processed data packets, via thedata network toward the computing device, the data packets having beenexecuted on by the processor circuit.

In another embodiment, logic is encoded in one or more non-transitorytangible media for execution by a machine and when executed by themachine operable for: receiving, by a network device in a data network,instructions enabling execution of at least a portion of a prescribedapplication on identifiable data packets, the identifiable data packetsoriginating from a requesting network device and destined for executionof the prescribed application by a computing device; executing by thenetwork device, on behalf of the computing device, at least a portion ofthe prescribed application on data packets received via the data networkbased on identifying the data packets as the identifiable data packets,and further based on determined available processing capabilities in thenetwork device; and outputting as processed data packets, via the datanetwork toward the computing device, the data packets having beenexecuted on by the network device.

DETAILED DESCRIPTION

Particular embodiments enable network devices (e.g., network switchdevices, network router devices, firewall devices, etc.) to executedistributed computing on behalf of a destination computing deviceexecuting a prescribed application for a requesting network device. Thenetwork devices can execute distributed computing on identifiable datapackets from the requesting network device, on behalf of the destinationcomputing device, based on executing at least a portion of theprescribed application using available application processingcapabilities in the network devices.

All data networks, regardless of size or scope, rely on network devicesfor executing prescribed network device operations that provide thecommunications within the data network infrastructure. Larger datanetworks are implemented using a larger number of network devices and/orlarger capacity network devices. Such network devices can be constructedand implemented using generic hardware components, including centralprocessing unit (CPU) devices and/or multiple-core processor devicesetc.; such prescribed network devices also can be constructed andimplemented using specialized hardware components, including for exampledigital signal processing (DSP) circuitry and/or application specificintegrated circuit (ASIC) devices. Even with the demands of networkdevices in executing prescribed network device operations in a datanetwork, the network devices often can encounter reduced demand,resulting in under-utilization of the network devices.

The example embodiments can exploit the under-utilization of the networkdevices executing the prescribed network operations based on utilizingavailable application processing capabilities for distributed executionof at least a portion of the prescribed application executed by acomputing device. The application processing capabilities are distinctand operate independently from native resources used in the networkdevices for executing the prescribed network device operations. Further,the application processing capabilities are subordinate to the nativeresources of the network devices; hence, any execution of any portion ofa prescribed application on behalf of a computing device is alwayssubordinate to the native resources of the network devices, such thatexecution of any portion of the prescribed application will neverinterfere with the native resources executing the prescribed networkoperations.

Hence, the example embodiments can provide a truly scalable distributedcomputing architecture that enables computing capacity to increase indirect proportion to an increase in the size of the data network. Inparticular, as network infrastructure capacity is increased fornetwork-centric architectures such as cloud computing, fog computing,Internet of Things (IoT), Software Defined Networking (SDN), the exampleembodiments can provide a proportional increase in computing capacityamong the network devices. Moreover, the distributed computing can beinitiated dynamically by any apparatus, for example a centralizedcontroller or a destination computing device that can dynamicallyinstall at least portions of a prescribed application to network devicesalong a network path between the requesting network device and thedestination computing device. Further, the network devices can addcomputing metrics as an optimization metric for calculating an optimizedpath for routing data packets toward a destination computing device,where the optimized path can provide a minimal overall computing time.

Hence, the example embodiments can reduce processing burdens of adestination computing device, and can even reduce the overall computingtime for completing execution of a prescribed application onidentifiable data packets, based on routing the identifiable datapackets along an optimized path including one or more network devicesthat can execute successive portions of the prescribed applicationbefore delivery to the destination computing device. The distributedcomputing provided by the example embodiments can provide dramaticimprovements in overall computing time, especially when a computingdevice 12 needs to execute the prescribed application for hundreds oreven thousands of different network devices 16.

FIG. 1 is a diagram illustrating an example data network 10 having anapparatus 12 and one or more network devices 14, where the apparatus 12can send instructions 16 to the one or more network devices 14 toexecute at least a portion 18 of a prescribed application 20 for arequesting network device 16, according to an example embodiment. Eachapparatus 12, 14, 16 is a physical machine (i.e., a hardware device)configured for implementing network communications with other physicalmachines via the network 10. The term “configured for” or “configuredto” as used herein with respect to a specified operation refers to adevice and/or machine that is physically constructed (i.e.,manufactured) and arranged to perform the specified operation. Hence,each apparatus 12, 14, 16 is a network-enabled machine implementingnetwork communications via the network 10.

Each network device 14 is configured for forwarding data packets outputfrom the requesting network device 16 to the computing device 12,illustrated as a video server. The term “network device” as used in thisspecification and claims refers to any apparatus (i.e., machine) thatcan establish data links for forwarding data packets originated from therequesting network device 16 and destined for the destination computingdevice 12; in other words, a “network device” is any network-baseddevice in any path between the originating requesting network device 16(e.g., a client computer, a sensor device such as a video camera,microphone, etc.) and the destination computing device 12, typically aserver device.

As described in further detail below, the apparatus 12 enablesdistributed computing in the network devices 14 based on determiningapplication processing abilities in one or more of the network devices14, where “application processing capabilities” as used in thespecification and claims refers to the ability of a correspondingnetwork device 14 to execute at least a portion 18 of a prescribedapplication 20 on identifiable data packets originating from arequesting network device 16. The prescribed application 20 can be anyOSI layer 7 application that typically is executed on a server device12, for example video compression software executed on a video server.Hence, “application processing capabilities” can include anidentification of whether a network device 14 has the required hardwareto execute at least a portion 18 of a prescribed application 20, as wellas an identification of whether the network device 14 ever has anyavailable hardware capacity that is not reserved exclusively for anynative resources of the network device for execution of thecorresponding prescribed network device operations.

For example, the apparatus 12 can determine that the network device 14 a(e.g., a link layer switch) does not have application processingcapabilities because it does not have hardware and/or executablesoftware resources to accept instructions 16, via the network 10, forexecuting at least a portion 18 of a prescribed application 20; theapparatus 12 also can determine that the network devices 14 b, 14 c, and14 d have sufficient application processing capabilities (in the form ofhardware resources, executable software resources, and availablecapacity) to execute at least a portion 18 of a prescribed application20 normally executed by the apparatus 12.

In response to the apparatus 12 determining that the network devices 14b, 14 c, and 14 d are capable of executing at least a portion 18 of aprescribed application 20, the apparatus 12 can send instructions 16 tothe network devices 14 b, 14 c, and 14 d that enable the network devices14 b, 14 c, and 14 d to execute at least portions 18 of the prescribedapplication 20.

Hence, each of the network devices 14 b, 14 c, and 14 d can execute acorresponding portion of the prescribed application and outputcorresponding processed data packets: for example, if the prescribedapplication 18 has ten (10) portions (18 a-18 j) that need to beexecuted in sequence, the network device 14 b can execute theapplication portions 18 a and 18 b on the original data packets receivedfrom the requesting devices 16 via the switch 14 a, and output processeddata packets (“first generation processed data packets”) to the next hopnetwork device 14 c; the network device 14 c can execute the applicationportions 18 c and 18 d on the first generation processed data packetsreceived from the network device 14 b and output second generationprocessed data packets to the next hop network device 14 d; the networkdevice 14 d can execute the application portions 18 e and 18 f on thesecond generation processed data packets and output third-generationprocessed data packets to the destination computing device 12.

Hence, instead of executing the entire prescribed application 18 on theoriginal data packets output by the requesting device 16, the computingdevice 12 can complete the execution of the prescribed application 18based on executing the application portions 18 g, 18 h, 18 i, and 18 jon the third-generation processed data packets output by the networkdevice 14 d. As described below, the application portions 18 a through18 f can be implemented as one or more executable serialized Java classelements.

FIG. 2 illustrates another example system 10′ that enables the networkdevices 14 to utilize computing metrics as a routing metric fordetermining an optimized path 22 providing a minimal overall computingtime for completing execution of the prescribed application 20,according to an example embodiment. Conventional routing protocols(e.g., Open Shortest Path First—OSPF) assume that the best path forreaching a destination device 12 is the path providing the shortestnumber of hops.

According to an example embodiment, computing metrics are added as partof the routing protocol optimization, such that the optimized path 22for reaching a destination device 12 can be a path providing a minimaloverall computing time for completing execution of the prescribedapplication 18. For example, assume that each of the “capable” networkdevices 14 b-14 h (i.e., those network devices capable of executing atleast one portion 18 of the prescribed application 20) can advertisetheir relative application processing capabilities as part of advertisecomputing metrics that are advertised with other routing metricsaccording to a prescribed routing protocol: the network devices 14 b, 14c, 14 d, 14, and 14 h each can advertise that they can execute twoportions 18 of the application 20, whereas the network devices 14 e and14 g advertise the taken execute only one portion 18 of the application20.

Hence, the network devices 14 b-14 h can determine that the path “P1”along the sequence of capable network devices 14 e-14 f-14 g-14 h-14 dprovides the optimum path 22, as the path “P1” can execute a total ofeight (8) of the portions 18 a-18 h, requiring the destination computingdevice 12 to execute only the last two portions 18 i and 18 j tocomplete execution of the prescribed application 20; the path “P2” alongthe sequence of network devices 14 e-14 g-14 h-14 d and the path “P3”along the sequence of network devices 14 b-14 c-14 d each can execute atotal of six (6) of the portions 18 a-18 f, requiring the destinationcomputing device 12 to execute the last four portions 18 g-18 j; thepath “P4” along the sequence of network devices 14 e-14 c-14 d canexecute a total of five (5) of the portions 18 a-18 e, requiring thedestination computing device 12 to execute the last five portions 18f-18 j; and the shortest-hop path “P5” along the sequence of networkdevices 14 c-14 d provides the longest execution time, since theshortest hop path “P5” can only execute a total of four (4) of theportions 18 a-18 d, requiring the destination computing device 12 toexecute the last six (6) portions 18 e-18 j.

Hence, the longest path “P1” can provide the optimized path for reachingthe computing device 12 relative to the overall computing time forcompleting execution of the prescribed application 20, since theexecutable portions 18 can be distributed along a larger number ofnetwork devices 14, minimizing the processing requirements of thedestination computing device 12. Hence, the delay encountered by a userof the requesting network device and 16 can be substantially reduceddespite the additional number of hops encountered along the optimizedpath 22, especially if the propagation delay is less than thecomputation time per each computation cycle for a corresponding portion18. Further, even though the network device 14 may execute the portionsat a slower compute speed than the computing device 12, overall timesavings can still be achieved in cases where the destination computingdevice 12 would otherwise be burdened with managing hundreds orthousands of different requests from different requesting networkdevices 16.

FIG. 3 illustrates an example implementation of any one of the devices12, 14, and/or 16 of FIG. 1 or 2, according to an example embodiment.

Each apparatus 12, 14, and/or 16 can include a device interface circuit(i.e., a network interface circuit) 40, a processor circuit 42, and amemory circuit 44. The device interface circuit 40 can include one ormore distinct physical layer transceivers for communication with any oneof the other devices 12, 14, and/or 16; the device interface circuit 40also can include an IEEE based Ethernet transceiver for communicationswith the devices of FIG. 1 or 2 via any of the links (e.g., a wired orwireless link, an optical link, etc.). The processor circuit 42 can beconfigured for executing any of the operations described herein, and thememory circuit 44 can be configured for storing any data or data packetsas described herein.

Any of the disclosed circuits of the devices 12, 14, and/or 16(including the device interface circuit 40, the processor circuit 42,the memory circuit 44, and their associated components) can beimplemented in multiple forms. Example implementations of the disclosedcircuits include hardware logic that is implemented in a logic arraysuch as a programmable logic array (PLA), a field programmable gatearray (FPGA), or by mask programming of integrated circuits such as anapplication-specific integrated circuit (ASIC) or a digital signalprocessor (DSP) device. Any of these circuits also can be implementedusing a software-based executable resource that is executed by acorresponding internal processor circuit such as a microprocessorcircuit (not shown) and implemented using one or more integratedcircuits, where execution of executable code stored in an internalmemory circuit (e.g., within the memory circuit 44) causes theintegrated circuit(s) implementing the processor circuit to storeapplication state variables in processor memory, creating an executableapplication resource (e.g., an application instance) that performs theoperations of the circuit as described herein. Hence, use of the term“circuit” in this specification refers to both a hardware-based circuitimplemented using one or more integrated circuits and that includeslogic for performing the described operations, or a software-basedcircuit that includes a processor circuit (implemented using one or moreintegrated circuits), the processor circuit including a reserved portionof processor memory for storage of application state data andapplication variables that are modified by execution of the executablecode by a processor circuit. The memory circuit 44 can be implemented,for example, using a non-volatile memory such as a programmable readonly memory (PROM) or an EPROM, and/or a volatile memory such as a DRAM,etc.

Further, any reference to “outputting a message”, “outputting a packet”,or “outputting an instruction” (or the like) can be implemented based oncreating the message/packet in the form of a data structure and storingthat data structure in a non-transitory tangible memory medium in thedisclosed apparatus (e.g., in a transmit buffer). Any reference to“outputting a message” or “outputting a packet” (or the like) also caninclude electrically transmitting (e.g., via wired electric current orwireless electric field, as appropriate) the message/packet stored inthe non-transitory tangible memory medium to another network node via acommunications medium (e.g., a wired or wireless link, as appropriate)(optical transmission also can be used, as appropriate). Similarly, anyreference to “receiving a message” or “receiving a packet” (or the like)can be implemented based on the disclosed apparatus detecting theelectrical (or optical) transmission of the message/packet on thecommunications medium, and storing the detected transmission as a datastructure in a non-transitory tangible memory medium in the disclosedapparatus (e.g., in a receive buffer). Also note that the memory circuit44 can be implemented dynamically by the processor circuit 42, forexample based on memory address assignment and partitioning executed bythe processor circuit 42.

FIGS. 4A-4C summarize methods by the devices of FIGS. 1-3 of providingdistributed execution of a prescribed application on behalf of acomputing device, according to an example embodiment.

The operations described with respect to any of the Figures can beimplemented as executable code stored on a computer or machine readablenon-transitory tangible storage medium (e.g., floppy disk, hard disk,ROM, EEPROM, nonvolatile RAM, CD-ROM, etc.) that are completed based onexecution of the code by a processor circuit implemented using one ormore integrated circuits; the operations described herein also can beimplemented as executable logic that is encoded in one or morenon-transitory tangible media for execution (e.g., programmable logicarrays or devices, field programmable gate arrays, programmable arraylogic, application specific integrated circuits, etc.).

In addition, the operations described with respect to any of the Figurescan be performed in any suitable order, or at least some of theoperations in parallel. Execution of the operations as described hereinis by way of illustration only; as such, the operations do notnecessarily need to be executed by the machine-based hardware componentsas described herein; to the contrary, other machine-based hardwarecomponents can be used to execute the disclosed operations in anyappropriate order, or at least some of the operations in parallel.

Referring to FIG. 4A, the processor circuit 42 of an apparatus 12 candetermine in operation 50 a prescribed application 20 to be executed bya destination computing device 12 on identifiable data packetsoriginating from a requesting network device 16. The apparatus detectingin operation 50 the prescribed application 20 to be executed can be anynetwork-based device, for example the server device 12, a softwaredefined network (SDN) controller device, a distributed networkcontroller device, a router device, etc. The prescribed application 20to be executed can be detected by various techniques, for exampleinitial detection of the data flow originating from the client device 16using deep packet inspection, receiving a notification from either thedestination computing device 12 and/or the requesting network device 16,a scheduled operation, etc. To simplify discussion, it will be assumedthat the operations of FIG. 4A are executed by the destination computingdevice 12.

The processor circuit 42 of the video server 12 can determine inoperation 52 the processing capabilities of each network device 14providing one or more network paths between the requesting networkdevice 16 and the destination computing device 12. For example, theprocessor circuit 42 of the video server 12 can use LLDP to determinethat the network device 14 a is incapable of any application processingcapabilities, whereas the network devices 14 b-14 d, 14 f, and 14 h canexecute up to two portions 18 of the prescribed application 20, and thenetwork devices 14 e and 14 g can execute one portion 18 of theprescribed application 20. Other policies and protocols can be deployedthat limit the amount of work that a capable network device 14 can beallocated for a given application 20.

In response to determining the application processing capabilities ofeach of the network devices 14, the processor circuit 42 of the videoserver 12 in operation 54 can send instructions 16 to each of thecapable network devices 14 b-14 h that enable the capable networkdevices to execute at least one or more portions 18 of the prescribedapplication 20 on behalf of the computing device 12. For example, theinstructions 16 can include first instructions, second instructions,computing metrics, and optional execution attributes.

The first instructions can include instructions for implementing a“shim” interface execution environment (80 of FIG. 5), and the secondinstructions can include instructions (e.g., one or more serialized Javaclass elements) for executing one or more portions 18 of the prescribedapplication 20). The shim interface execution environment 80 executed bythe processor circuit 42 of the capable network device 14 establishes aninterface between a kernel 82 executed natively in the network device 14and the portions 18 of the application 20. As described in furtherdetail below, the shim interface execution environment 80 also canperform deep packet inspection of received data packets to determinewhich of the available portions 18 should be executed, depending on theidentified application state of the payload inside the received datapackets.

The second instructions can include one or more serialized Java classelements for executing one or more portions 18 of the prescribedapplication 20. For example, the prescribed application 20 can beimplemented as the portions 18 executed in a prescribed sequence 18 a-18j, where each portion 18 can be implemented as a corresponding Javaclass element. Hence, a network device 14 can receive all the serializedJava class elements, enabling the shim interface execution environment80 to select one or more of the serialized Java class elements dependingon the identified application state detected during deep packetinspection of the payload inside the received data packets. Alternativetechniques can be used to implement the second instructions forexecuting one or more portions 18; for example, bytecodes or some othermeta-instruction. Hence, use of serialized Java class elements is oneexample of the portions 18.

The instructions 16 also can include computing metrics for determiningthe optimized path 22 illustrated in FIG. 2. For example, the computingmetrics can specify the total number of portions 18 required forexecution, and the relative processing requirements for each portion 18(e.g., number of execution cycles, etc.); the computing metrics also canspecify network topology according to a prescribed routing protocol,network device capabilities (e.g., the number of portions that can beexecuted by an identified network device 14, etc.). The instructions 16also can include optional execution attributes that enable each networkdevice 14 to decide whether to execute a portion 18 of the prescribedapplication 20: example attributes can include subscriber attributes fora given service level, where data flows associated with higher servicelevels can be granted distributed computing along a higher performancepath (e.g., the optimized path 22), whereas data flows associated withlower service levels are allocated to paths that provide a higherexecution time.

Referring to FIG. 4B, the device interface circuit 40 of a capablenetwork devices 14 can receive in operation 56 the instructions outputby the video server 12 in operation 54 of FIG. 4A, for example as adynamic installation in response to the packet flow detected by thevideo server 12. The instructions received in operation 56 enable theprocessor circuit 42 (e.g., microprocessor circuit, multi-processor corecircuit, ASIC, and/or DSP, etc.) of the capable network device 14 toexecute in operation 58 the first instructions for installation andinstantiation of the shim interface 80 between the kernel 82 and theportions 18 of the prescribed application 20, illustrated as applicationcode in FIG. 5.

FIG. 5 illustrates the executable processes in any one of the capablenetwork devices 14 (e.g., 14 b), according to an example embodiment. Thecapable network device 14 b can cause its native executable kernel 82 toexecute the shim interface 80, including establishment of aninterprocess communication 84 between the shim interface and the kernel82. The kernel 82 also provides an interface between the hardware of theprocessor circuit 42 and native software 86, for example router softwareexecuted by the hardware 42 under the control of the kernel 82 in orderto provide the required network operations.

Upon execution of the shim interface 80 by the processor circuit 42, theshim interface 80 can monitor in operation 64 identifiable data packetsmatching identification parameters of the prescribed application 20. Forexample, the shim interface 80 can execute deep packet inspection ofreceived data packets in order to examine the payload of the receiveddata packets. Deep packet inspection can be implemented, for example,using the commercially available Cisco onePK DataPath Service Set fromCisco Systems, San Jose Calif.

The shim interface 80 in operation 62 determines whether any of thereceived data packets received by the device interface circuit 40 areidentified as identifiable data packets matching identificationparameters for the prescribed application 20 or any of the associatedportions 18. As noted previously, the shim interface 80 can serve as aninterface for the portions 18 of multiple different applications 20 forthe same or different destination computing devices 12. If in operation62 the received data packets do not match any identification parametersfor any existing application 20 or portion 18 thereof, the shiminterface 80 executed by the processor circuit 42 can forward thereceived data packets via the device interface circuit 40 to the nexthop destination using existing routing protocols without furtherprocessing in operation 64.

If in operation 62 the received data packets are identified by the shiminterface 80 as identifiable data packets for one of the applications 20or one of the portions 18, the shim interface 80 determines in operation66 whether sufficient resources are available in the network device 14for execution of one or more portions 18 of the prescribed application20: if the shim interface 80 determines that there are insufficientprocessing capabilities (e.g., too many device resources are allocatedfor existing tasks), the shim interface 80 causes the received datapackets to be forwarded to the next hop destination in operation 64without further processing. If, however, the shim interface determinesavailable processing capabilities to execute one or more of the portions18 on the received data packets, the shim interface in operation 68 ofFIG. 4C sends the identified packets via a callback interface (88 ofFIG. 5) to one or more of the portions 18 of the prescribed application20 for execution: if any of the portions 18 reference an applicationprogramming interface request 90, the shim interface 80 can interceptthe API request, schedule the API request among other pending requests,and forward the request to the kernel 82 via the interprocesscommunication 84. Hence, the shim interface 80 enables thehardware-based execution of the portions 18 to be controlled by thekernel 82 to ensure that the execution of the portions 18 aresubordinate to any of the native operations executed by the devicessoftware 86.

In response to the shim interface 80 receiving in operation 70 theprocessed data packets from the executed portion 18, the code shim 80can determine the optimized path 22 for reaching the computation device12, for example based on executing optimization according tooptimization metrics such as computing time, service look, hop count,network congestion, subscriber attributes for distributed computingservices, etc. Depending on implementation, determination of theoptimized path 22 can be based on the shim interface 80 sending anoptimization request to the native routing software 86 via theinterprocess communication 84 and the kernel 82, ensuring the kernel 82maintains exclusive control over all device operations. The shiminterface 80 in operation 72 completes packaging of the processed datapackets, including adding any metadata necessary for identifyingprocessing state in the processed payload, and performing any TCP and/orIP processing that is necessary in response to the processing of thedata packets payload by the one or more portions 18 of the application20, including updating the next hop identifier for outputting toward thedestination computing device 12 along the optimized path 22. The shiminterface 80 in operation 74 causes the network interface circuit 40 tooutput the processed data packets toward the destination computingdevice 12 along the optimized path 22.

Hence, a capable network device 14 can execute at least a portion 18 ofa prescribed application 20 on behalf of a destination computing device12 on data packets received via the data network 10 that originated froma requesting network device 16. As described previously, subsequentprocessing can be executed by next hop routers 14 along each hop, untilreceived by the video server 12.

According to the example embodiments, idle resources within networkdevices can be exploited in order to reduce processing requirements by adestination computing device. Hence, the example embodiments enabledynamic deployment of a distributed computing network on an on-demandbasis. The scheduling of work can follow packet flows throughout thenetwork, enabling an increase in the available compute resources basedon redundant paths, equal cost multipath routing, or performancerouting. Network devices also can communicate amongst themselves toidentify an optimal path based on available device resources. Selectiveexecution based on subscriber attributes and/or service level alsoenables differentiated services in a scalable manner. The exampleembodiments are applicable to different network-based technologies,including cloud computing, software defined networking, distributedcomputing in an Internet of Things deployment, etc.

While the example embodiments in the present disclosure have beendescribed in connection with what is presently considered to be the bestmode for carrying out the subject matter specified in the appendedclaims, it is to be understood that the example embodiments are onlyillustrative, and are not to restrict the subject matter specified inthe appended claims.

What is claimed is:
 1. A method comprising: determining applicationprocessing capabilities in one or more network devices, in a datanetwork, for execution of at least a portion of a prescribed applicationon identifiable data packets from a requesting network device anddestined for a computing device; and sending instructions to the one ormore network devices, the instructions enabling the one or more networkdevices to execute at least the portion of the prescribed application,on behalf of the computing device, in response to detecting receipt ofthe identifiable data packets.
 2. The method of claim 1, wherein theinstructions further include computing metrics that enable the one ormore network devices to determine an optimized path for reaching thecomputing device relative to an overall computing time for completingexecution of the prescribed application on the identifiable datapackets.
 3. The method of claim 2, wherein the computing metrics enablethe one or more network devices to determine an optimized path providinga minimal overall computing time for completing execution of theprescribed application on the identifiable data packets.
 4. The methodof claim 2, wherein the instructions further include subscriberattributes that enable the one or more network devices to determine theoptimized path relative to the overall computing time and the subscriberattributes relative to a user of the requesting network device.
 5. Themethod of claim 1, wherein the instructions include first executablecode, which when executed by the one or more network devices, providesan interface between the corresponding one or more network device and atleast the portion of the prescribed application according to thecorresponding application processing abilities.
 6. The method of claim1, wherein the instructions include one or more executable serializedJava class elements for execution of the corresponding portion of theprescribed application by the one or more network devices on based ondeep packet inspection of the identifiable data packets.
 7. An apparatuscomprising: a device interface circuit configured for communicationswith one or more network devices in a data network; and a processorcircuit configured for determining application processing capabilitiesin the one or more network devices, for execution of at least a portionof a prescribed application on identifiable data packets from arequesting network device and destined for a computing device; theprocessor circuit further configured for sending, via the deviceinterface circuit, instructions to the one or more network devices, theinstructions enabling the one or more network devices to execute atleast the portion of the prescribed application, on behalf of thecomputing device, in response to detecting receipt of the identifiabledata packets.
 8. The apparatus of claim 7, wherein the instructionsfurther include computing metrics that enable the one or more networkdevices to determine an optimized path for reaching the computing devicerelative to an overall computing time for completing execution of theprescribed application on the identifiable data packets.
 9. Theapparatus of claim 8, wherein the computing metrics enable the one ormore network devices to determine an optimized path providing a minimaloverall computing time for completing execution of the prescribedapplication on the identifiable data packets.
 10. The apparatus of claim8, wherein the instructions further include subscriber attributes thatenable the one or more network devices to determine the optimized pathrelative to the overall computing time and the subscriber attributesrelative to a user of the requesting network device.
 11. The apparatusof claim 7, wherein the instructions include first executable code,which when executed by the one or more network devices, provides aninterface between the corresponding one or more network device and atleast the portion of the prescribed application according to thecorresponding application processing abilities.
 12. The apparatus ofclaim 7, wherein the instructions include one or more executableserialized Java class elements for execution of the correspondingportion of the prescribed application by the one or more network deviceson based on deep packet inspection of the identifiable data packets. 13.Logic encoded in one or more non-transitory tangible media for executionby a machine and when executed by the machine operable for: determiningapplication processing capabilities in one or more network devices, in adata network, for execution of at least a portion of a prescribedapplication on identifiable data packets from a requesting networkdevice and destined for a computing device; and sending instructions tothe one or more network devices, the instructions enabling the one ormore network devices to execute at least the portion of the prescribedapplication, on behalf of the computing device, in response to detectingreceipt of the identifiable data packets.
 14. A method comprising:receiving, by a network device in a data network, instructions enablingexecution of at least a portion of a prescribed application onidentifiable data packets, the identifiable data packets originatingfrom a requesting network device and destined for execution of theprescribed application by a computing device; executing by the networkdevice, on behalf of the computing device, at least a portion of theprescribed application on data packets received via the data networkbased on identifying the data packets as the identifiable data packets,and further based on determined available processing capabilities in thenetwork device; and outputting as processed data packets, via the datanetwork toward the computing device, the data packets having beenexecuted on by the network device.
 15. The method of claim 14, whereinthe receiving includes receiving computing metrics associated with othernetwork devices in the data network, the outputting include determiningan optimized path for reaching the computing device relative to anoverall computing time for the identifiable data packets.
 16. The methodof claim 14, wherein the receiving includes receiving subscriberattributes associated with providing distributed computing services, theexecuting based on determining the requesting network device hasassociated subscriber attributes for the distributed computing services.17. The method of claim 14, wherein the receiving includes receivingfirst executable code, the executing including executing the firstexecutable code for establishment of an interface between a kernelexecuted natively in the network device and at least the portion of theprescribed application based on the determined available processingcapabilities in the network device.
 18. The method of claim 17, whereinthe executing includes: the interface identifying the data packets asthe identifiable data packets for the prescribed application; theinterface determining the available processing capabilities in thenetwork devices; and the interface sending the identifiable data packetsto received second executable code, executed using at least a portion ofthe available processing capacity, for execution of at least the portionof the prescribed application.
 19. The method of claim 14, wherein thereceiving includes receiving one or more executable serialized Javaclass elements for execution of the corresponding portion of theprescribed application.
 20. An apparatus comprising: a network interfacecircuit configured for receiving, via in a data network, instructionsenabling execution of at least a portion of a prescribed application onidentifiable data packets, the identifiable data packets originatingfrom a requesting network device and destined for execution of theprescribed application by a computing device; and a processor circuitconfigured for executing, on behalf of the computing device, at least aportion of the prescribed application on data packets received by thenetwork interface circuit based on identifying the data packets as theidentifiable data packets, and further based on determined availableprocessing capabilities in the apparatus; the network interface circuitfurther configured for outputting as processed data packets, via thedata network toward the computing device, the data packets having beenexecuted on by the processor circuit.
 21. The apparatus of claim 20,wherein the network interface circuit is configured for receivingcomputing metrics associated with other network devices in the datanetwork, the processor circuit configured for determining an optimizedpath for reaching the computing device relative to an overall computingtime for the identifiable data packets.
 22. The apparatus of claim 20,wherein the network interface circuit is configured for receivingsubscriber attributes associated with providing distributed computingservices, the processor circuit configured for execution at least theportion of the prescribed application based on determining therequesting network device has associated subscriber attributes for thedistributed computing services.
 23. The apparatus of claim 20, whereinthe network interface circuit is configured for receiving firstexecutable code, the processor circuit configured for executing thefirst executable code for establishment of a virtualized interfacebetween a kernel executed natively by the processor circuit and at leastthe portion of the prescribed application based on the determinedavailable processing capabilities in the apparatus.
 24. The apparatus ofclaim 23, wherein the processor circuit is configured for: causing thevirtualized interface to identify the data packets as the identifiabledata packets for the prescribed application; causing the virtualizedinterface to determine the available processing capabilities in theapparatus; and causing the virtualized interface to send identified datapackets to received second executable code, executed using at least aportion of the available processing capacities, for execution of atleast the portion of the prescribed application.
 25. The apparatus ofclaim 20, wherein the network interface circuit is configured forreceiving one or more executable serialized Java class elements forexecution of the corresponding portion of the prescribed application.26. Logic encoded in one or more non-transitory tangible media forexecution by a machine and when executed by the machine operable for:receiving, by a network device in a data network, instructions enablingexecution of at least a portion of a prescribed application onidentifiable data packets, the identifiable data packets originatingfrom a requesting network device and destined for execution of theprescribed application by a computing device; executing by the networkdevice, on behalf of the computing device, at least a portion of theprescribed application on data packets received via the data networkbased on identifying the data packets as the identifiable data packets,and further based on determined available processing capabilities in thenetwork device; and outputting as processed data packets, via the datanetwork toward the computing device, the data packets having beenexecuted on by the network device.